import { isArrayLike } from "./each";
import { findIndex } from "../array/findIndex";
import findKey from "../object/findKey";
//返回通过真相测试的第一个值。 别名为“检测”。
// 在list中逐项查找，返回第一个通过predicate迭代函数真值检测的元素值，如果没有元素通过检测则返回 undefined。 如果找到匹配的元素，函数将立即返回，不会遍历整个list。 predicate 通过 iteratee 进行转换，以简化速记语法。
export default function find(obj, predicate, context?) {
  const keyFinder = isArrayLike(obj) ? findIndex : findKey
  var key = keyFinder(obj, predicate, context)
  if (key !== void 0 && key !== -1) return obj[key]
}
